package Demo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-01-10
 * Time: 18:23
 */

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 *  标准库中得阻塞队列使用
 *  Blocking Queue是一个接口,真正实现得类是Linked Blocking Queue
 *  put方法用于阻塞队列得入队列,take方法用于阻塞队列得出队列
 *  Blocking Queue也有offer,poll,peek等方法,但是这些方法不带有阻塞特性
 */
public class Thread_Demo17 {
    public static void main(String[] args) {
        BlockingQueue<String> queue = new LinkedBlockingQueue<>();
        // 入队列操作 -- 队列满了则不可以在出队列
        try {
            queue.put("a");
            queue.put("b");
            queue.put("c");

            // 出队列操作 -- 队列为空则不可以继续出队列阻塞等待队列加入元素
            System.out.println(queue.take());
            System.out.println(queue.take());
            System.out.println(queue.take());
            //System.out.println(queue.take());

        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
